package Stream流;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.stream.Stream;

public class StreamDemo2 {
    public static void main(String[] args) {
        /**
         * 单列集合       default Stream<E> stream()   Collection中的默认方法
         * 双列集合      无                            无法直接使用stream流
         * 数组          public static <T> Stream<T> stream(T[] array)  Arrays工具类中的静态方法
         * 堆零散数据     public static<T> Stream<T> of(T... values)   stream接口中的静态方法
         */

        ArrayList<String> list=new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        //单列集合获取stream流
        list.stream().filter(s -> s.startsWith("a")).forEach(s -> System.out.println(s));
        System.out.println("=====================================");



        //双列集合获取流
        HashMap<String,Integer> map=new HashMap<String,Integer>();
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);
        map.put("d",4);
        //双列集合获取流必须使用keyset或者entryset获取单列集合
        map.entrySet().stream().filter(s -> s.getKey().startsWith("a")).forEach(s -> System.out.println(s));
        System.out.println("=====================================");
        map.keySet().stream().forEach(System.out::println);
        System.out.println("=====================================");


        //数组获取stream流
        String [] array={"a","b", "c", "d"};
        //调用工具类
        Arrays.stream(array).forEach(s -> System.out.println(s));
        System.out.println("=====================================");


        //堆零散数据获取stream流(条件必须是同种类型)
        Stream.of("a","b","c","d").forEach(s -> System.out.println(s));
    }
}
